package nuc.lizongze.backend.service.impl;

import nuc.lizongze.backend.service.FileUploadService;
import nuc.lizongze.utils.FtpUtil;
import nuc.lizongze.utils.IDUtils;
import nuc.lizongze.utils.Result;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import java.text.SimpleDateFormat;
import java.util.Date;

@Service
public class FileUploadServiceImpl implements FileUploadService {
    /**
     * Description: 向FTP服务器上传文件
     *host FTP服务器hostname
     * port FTP服务器端口
     * username FTP登录账号
     * password FTP登录密码
     * basePath FTP服务器基础目录
     * filePath FTP服务器文件存放路径。例如分日期存放：/2018/01/01。文件的路径为basePath+filePath
     *  filename 上传到FTP服务器上的文件名
     */
    @Value("${FTP_HOST}")
    private String FTP_HOST;
    @Value("${FTP_PORT}")
    private int FTP_PORT;
    @Value("${FTP_USERNAME}")
    private String FTP_USERNAME;
    @Value("${FTP_PASSWORD}")
    private String FTP_PASSWORD;
    @Value("${FTP_BASEPATH}")
    private String FTP_BASEPATH;
    @Override
    public Result fileUpload(MultipartFile multipartFile) {
        try {
            // 定义图片路径
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("/yyyy/MM/dd");
            String path = simpleDateFormat.format(new Date());

            // 设置新的文件名
            String newFileName = IDUtils.genImageName() +multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
            FtpUtil.uploadFile(FTP_HOST,FTP_PORT,FTP_USERNAME,FTP_PASSWORD,FTP_BASEPATH,path,newFileName, multipartFile.getInputStream());
            String imageURL = "http://"+FTP_HOST+path+newFileName;
            return Result.ok(imageURL);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }
}
